﻿Imports Microsoft.Reporting.WinForms
Imports System.IO
Imports System.Windows.Forms
Imports System.Reflection

Public Class relReciboProjecao

#Region " Campos de instância "
    Private dsRelatorio As DataSet
    Private iReciboEmBranco As Integer
#End Region

#Region "Propriedades"

    ''' <summary>
    ''' Propriedade pública que recebe os dados do Relatorio.
    ''' </summary>    
    Property pDtsRelatorio As DataSet
        Get
            Return dsRelatorio
        End Get
        Set(ByVal value As DataSet)
            dsRelatorio = value
        End Set
    End Property

    ''' <summary>
    ''' Atributo para definir como o Recibo será impresso.
    ''' </summary>
    Property pReciboEmBranco As Integer
        Get
            Return iReciboEmBranco
        End Get
        Set(ByVal value As Integer)
            iReciboEmBranco = value
        End Set
    End Property

#End Region

#Region " Métodos Privados "
    Private Sub relUsuariosCourier_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            'Variavel para alimentar o dataSource do report
            Dim rdsRecibo As ReportDataSource = New ReportDataSource()

            'Alimenta dataSource

            rdsRecibo.Value = dsRelatorio.Tables(0)
            rdsRecibo.Name = "dtsReciboProjecao"

            'Informa ao Report que ele utilizar 
            Me.rptRelatorio.LocalReport.DataSources.Add(rdsRecibo)

            'Exportar apenas para PDF.
            eliminarExportacao()

            AddHandler rptRelatorio.LocalReport.SubreportProcessing, AddressOf SetSubDataSource

            'Inicia uma lista de Parâmetros para o Relatório
            Dim parametros As New List(Of ReportParameter)()
            'Add parâmetro a lista
            parametros.Add(New ReportParameter("pReciboEmBranco", Me.pReciboEmBranco))
            'Add os parâmetros ao relatório
            rptRelatorio.LocalReport.SetParameters(parametros)

            'Carrega Relatorio
            Me.rptRelatorio.RefreshReport()
        Catch ex As Exception
            MessageBox.Show(ex.Message,
                            "Courier - Módulo de Circulação.",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Information)
        End Try
        
    End Sub

    Public Sub SetSubDataSource(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)

        e.DataSources.Add(New ReportDataSource("dtsRecibo", dsRelatorio.Tables(0)))

    End Sub

    ''' <summary>
    ''' Método responsável por desabilitar a exportação do relatório para Word e Excel.
    ''' </summary>
    Public Sub eliminarExportacao()
        Dim renFormato As RenderingExtension
        Dim lRelatorio As LocalReport
        lRelatorio = rptRelatorio.LocalReport
        For Each renFormato In lRelatorio.ListRenderingExtensions
            If Trim(renFormato.LocalizedName) = "Excel" Or Trim(renFormato.LocalizedName) = "Word" Then
                Dim info As FieldInfo = renFormato.GetType().GetField("m_isVisible", BindingFlags.NonPublic Or BindingFlags.Instance)
                info.SetValue(renFormato, False)
            End If
        Next
    End Sub

#End Region
End Class